package yxy.game.pm2.module.worldboss;

import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;

import yxy.apple.util.redisson.RedisException;
import yxy.game.pm2.bean.area.AreaBean;
import yxy.game.pm2.bean.module.AreaModule;

public class WorldBossModule extends AreaModule {
	// bean===========================================================================

	private boolean opening;// 开赛状态
	private String code;// BOSS代号
	private DateTime updateTime;

	private long totalDamage;// 总伤害

	public String getCode() {
		return code;
	}

	public void setCode(String code) {
		this.code = code;
	}

	public boolean isOpening() {
		return opening;
	}

	public void setOpening(boolean opening) {
		this.opening = opening;
	}

	public DateTime getUpdateTime() {
		return updateTime;
	}

	public void setUpdateTime(DateTime updateTime) {
		this.updateTime = updateTime;
	}

	public long getTotalDamage() {
		return totalDamage;
	}

	public void setTotalDamage(long totalDamage) {
		this.totalDamage = totalDamage;
	}

	// func===========================================================================

	public void update() {

	}

	// redis==========================================================================

	static private String key(int areaId) {
		return key(areaId, "WORLDBOSS");
	}

	public void set() {
		try {
			setv(key(getAreaId()), this);
		} catch (RedisException e) {
			e.printStackTrace();
		}
	}

	public static WorldBossModule get(String playerCode) {
		AreaBean area = area(playerCode);
		return get(area.getAreaId());
	}

	public static WorldBossModule get(int areaId) {
		try {
			WorldBossModule module = getv(key(areaId));
			if (module == null) {
				module = create(areaId);
			}
			module.update();
			return module;
		} catch (RedisException e) {
			e.printStackTrace();
		}
		return null;
	}

	private static WorldBossModule create(int areaId) {
		WorldBossModule module = new WorldBossModule();
		module.setAreaId(areaId);
		module.setCode(DateTime.now().toString(DateTimeFormat.forPattern("yyyyMMdd")));
		return module;
	}
	// lock==========================================================================

	@Override
	public String lockKey() {
		return String.format("lock:%s", key(getAreaId()));
	}
}
